import Vue from 'vue'
import Vuex from 'vuex'

// 导入 getters，类似与 vue 中的计算属性
import getters from './getters'

// 导入拆分的 Vuex 模块
// 按照功能将 Store 数据分隔成了一个个模块
import app from './modules/app'
import settings from './modules/settings'
import user from './modules/user'

import permission from './modules/permission'

Vue.use(Vuex)

// 实例化 Vuex
const store = new Vuex.Store({
  // 在 modules 位置挂载导入的 Vuex 模块
  // 整个项目中的数据采用模块化拆分
  modules: {
    app,
    settings,
    user,
    permission
  },

  // getters 类似与 Vue 中计算属性
  // 主要就是从 state 里面去取一些数量、或者对数据进行格式化
  // 为了方便获取项目中一些频繁使用的数据，所以特意去封装了 getters 模块
  getters
})

export default store
